﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Runtime.Serialization;

namespace CMD.BAL.CAT
{
   [DataContractAttribute]
   public class Sepomex
   {
       [DataMemberAttribute(EmitDefaultValue = false)]
       public List<Sepomex> l;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public List<Sepomex> ll;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public Sepomex em;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public string codigoPostal;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public string unidSepomex;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public string colonia;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public string idColonia;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public string unidLocalidad;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public string localidad;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public string estado;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public string idEstado;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public string municipio;
       [DataMemberAttribute(EmitDefaultValue = false)]
       public string idMunicipio;
       public static DataTable GetCodigoPostal(string idCodigoPostal, string idColonia)
        {
            DataTable dt;
            //ejecutar store
            dt = CMD_WEB.DAL.SrvDB.ExecuteQuery("exec SP_CMD_CAT_SEL_SEPOMEX_CODPOST_UNID'" + idCodigoPostal + "','" + idColonia + "'");
            return dt;
        }
       public static DataTable GetDataColonia(string idCodigoPostal)
        {
            DataTable dt;
            //ejecutar store
            dt = CMD_WEB.DAL.SrvDB.ExecuteQuery("exec SP_CMD_CAT_SEL_SEPOMEX_COLONIA'" + idCodigoPostal + "'");
            return dt;

        }
       public static DataTable GetDataLocalidad(string idEstado, string idMunicipio)
       {
           DataTable dt;
           //ejecutar store
           dt = CMD_WEB.DAL.SrvDB.ExecuteQuery("exec SP_CMD_GET_LOCALIDAD'" + idEstado + "','" + idMunicipio + "'");
           return dt;

       }
       //public static DataTable GetDataEstado(string idCodigoPostal) 
       // {
       //     DataTable dt;
       //     //ejecutar store
       //     dt = CMD_WEB.DAL.SrvDB.ExecuteQuery("exec SP_CMD_CAT_SEL_SEPOMEX_ESTADO '" + idCodigoPostal + "'");
       //     return dt;
       // }
       //public static DataTable GetDataMunicipio(string idCodigoPostal)
       //{
       //     DataTable dt;
       //     //ejecutar store
       //     dt = CMD_WEB.DAL.SrvDB.ExecuteQuery("exec SP_CMD_CAT_SEL_SEPOMEX_DELMUN'" + idCodigoPostal + "'");
       //     return dt;
       //}
       public static DataTable GetEstdMun(string idCodigoPostal)
       {
            DataTable dt;
            //ejecutar store
            dt = CMD_WEB.DAL.SrvDB.ExecuteQuery("exec SP_CMD_SEL_SEPOMEX_CP_DM_E'" + idCodigoPostal + "'");
            return dt;
       }
       public static List<Sepomex> GetDataCodigoPostal(string idCodigoPostal, string idColonia)
       {
            try
            {
                DataTable dt;
                //ejecutar store
                dt = Sepomex.GetCodigoPostal(idCodigoPostal,idColonia);
                if (dt.Rows.Count == 0)
                {
                    return null;
                }
                else
                {
                    List<Sepomex> list = dt.AsEnumerable().Select(
                    row => new Sepomex
                    {
                        unidSepomex = String.IsNullOrEmpty(row.Field<Int64>("UNID_SEPOMEX").ToString())
                        ? ""
                        : row.Field<Int64>("UNID_SEPOMEX").ToString(),
                        //codigoPostal = (String)row["CODIGO_POSTAL"],
                    }
                    ).ToList();
                    return list;
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
       }
       public static List<Sepomex> GetDataListCol(string idCodigoPostal)
       {
            try
            {
                DataTable dt;
                //ejecutar store
                dt = Sepomex.GetDataColonia(idCodigoPostal);
                if (dt.Rows.Count == 0)
                {
                    return null;
                }
                else
                {
                    List<Sepomex> list = dt.AsEnumerable().Select(
                    row => new Sepomex
                    {

                        idColonia = String.IsNullOrEmpty(row.Field<string>("ID_COLONIA"))
                        ? ""
                        : row.Field<string>("ID_COLONIA"),
                        colonia = String.IsNullOrEmpty(row.Field<string>("COLONIA"))
                        ? ""
                        : row.Field<string>("COLONIA"),
                    }
                    ).ToList();
                    return list;
                }   
            }
            catch (Exception ex)
            {

                throw ex;
            }
       }
       public static List<Sepomex> GetDataListLocalidad(string idEstado, string idMunicipio)
       {
           try
           {
               DataTable dt;
               //ejecutar store
               dt = Sepomex.GetDataLocalidad(idEstado,idMunicipio);
               if (dt.Rows.Count == 0)
               {
                   return null;
               }
               else
               {
                   List<Sepomex> list = dt.AsEnumerable().Select(
                   row => new Sepomex
                   {
                       unidLocalidad = String.IsNullOrEmpty(row.Field<Int64>("UNID_LOCALIDAD").ToString())
                       ? ""
                       : row.Field<Int64>("UNID_LOCALIDAD").ToString(),
                       localidad = String.IsNullOrEmpty(row.Field<string>("LOCALIDAD"))
                       ? ""
                       : row.Field<string>("LOCALIDAD"),
                       //codigoPostal = (String)row["CODIGO_POSTAL"],
                   }
                   ).ToList();
                   return list;
               }
           }
           catch (Exception ex)
           {

               throw ex;
           }
       }
       public static Sepomex GetDataEstMun(string idCodigoPostal)
       {
            try
            {
                Sepomex se;
                DataTable dt = Sepomex.GetEstdMun(idCodigoPostal);
                if (dt.Rows.Count == 0)
                {
                    return null;
                }
                else if (idCodigoPostal == "")
                {
                    return null;
                }
                else
                {
                    se = new Sepomex(null, Convert.ToString(dt.Rows[0]["ID_ESTADO"]), Convert.ToString(dt.Rows[0]["ESTADO"]), Convert.ToString(dt.Rows[0]["ID_MUNICIPIO"]), Convert.ToString(dt.Rows[0]["MUNICIPIO"]), null);
                }
                return se;
            }
            catch (Exception ex)
            {

                throw ex;
            }
       }
       public Sepomex() 
       {
            //codigoPostal = "";
            //colonia = "";
            //idColonia = "";
            //estado = "";
            //municipio = "";
       }
       //public Sepomex(string codigoPostal, string colonia, string idColonia, string estado, string municipio) 
       //public Sepomex(string codigoPostal, string estado,string idColonia, string colonia, string municipio) 
       //{
       //     this.codigoPostal = codigoPostal;
       //     this.idColonia = idColonia; 
       //     this.colonia = colonia;
       //     this.estado = estado;
       //     this.municipio = municipio;
       //}
       //public Sepomex(string idColonia, string colonia,string estado,string municipio)
       //{
       //    this.idColonia = idColonia;
       //    this.colonia = colonia;
       //     this.estado = estado;
       //     this.municipio = municipio;
       //}
       public Sepomex(List<Sepomex> l,string idEstado, string estado,string idMunicipio, string municipio, List<Sepomex> ll)
       {
           this.l = l;
           this.idEstado = idEstado;
           this.estado = estado;
           this.idMunicipio = idMunicipio;
           this.municipio = municipio;
           this.ll = ll;
       }
   }
}
